home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / linkobj.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  4KB  |  181 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16.  
  17. #define    CLASS    LinkObject_c
  18. #define    ivType    LinkObject_iv_t
  19.  
  20. #include "generics.h"
  21.  
  22. object    LinkObject_c;
  23.  
  24.  
  25. #line 19 "linkobj.d"
  26. #define FIRST gNext 
  27. #define LAST gPrevious 
  28.  
  29. cvmeth objrtn LinkObject_cvm_vMakeList(object self, va_list _rest_)
  30.     object lst, obj; 
  31.     MAKE_REST(self); 
  32.  
  33.     lst = gNew(self); 
  34.     while (obj = GetArg(object)) 
  35.         gAddBefore(lst, gNewWithObj(LinkValue, obj)); 
  36.     return lst; 
  37.  
  38. #line 41 "linkobj.c"
  39.  
  40. static    objrtn    LinkObject_cfm_vMakeList(object self, ...)
  41. {
  42.     va_list    _rest_;
  43.     va_start(_rest_, self);
  44.     return LinkObject_cvm_vMakeList(self, _rest_);
  45. }
  46.  
  47.  
  48.  
  49. #line 33 "linkobj.d"
  50. ivmeth objrtn LinkObject_ivm_vGetValues(object self, va_list _rest_)
  51.     object *var, seq, obj; 
  52.     MAKE_REST(self); 
  53.  
  54.     seq = gSequence(self); 
  55.     obj = gNext(seq); 
  56.     while (var = GetArg(object *)) { 
  57.         *var = obj; 
  58.         if (obj) 
  59.             obj = gNext(seq); 
  60.     } 
  61.     if (obj) 
  62.         gDispose(seq); 
  63.     return self; 
  64.  
  65. #line 70 "linkobj.c"
  66.  
  67. static    objrtn    LinkObject_ifm_vGetValues(object self, ...)
  68. {
  69.     va_list    _rest_;
  70.     va_start(_rest_, self);
  71.     return LinkObject_ivm_vGetValues(self, _rest_);
  72. }
  73.  
  74.  
  75.  
  76. #line 50 "linkobj.d"
  77. imeth objrtn LinkObject_im_gAddFirst(object self, object obj)
  78.     object lnk; 
  79.  
  80.     ChkArgNul(obj, 2); 
  81.     lnk = gNewWithObj(LinkValue, obj); 
  82.  
  83.     gAddAfter(self, lnk); 
  84.     return self; 
  85.  
  86. imeth objrtn LinkObject_im_gFirst(object self)
  87.  
  88.     object lnk = FIRST(self); 
  89.     return lnk ? gValue(lnk) : NULLOBJ; 
  90.  
  91. imeth objrtn LinkObject_im_gAddLast(object self, object obj)
  92.     object lnk; 
  93.  
  94.     ChkArgNul(obj, 2); 
  95.     lnk = gNewWithObj(LinkValue, obj); 
  96.  
  97.     gAddBefore(self, lnk); 
  98.     return self; 
  99.  
  100. imeth objrtn LinkObject_im_gLast(object self)
  101.  
  102.     object lnk = LAST(self); 
  103.     return lnk ? gValue(lnk) : NULLOBJ; 
  104.  
  105. imeth objrtn LinkObject_im_gSequence(object self)
  106.     return gNewWithObj(LinkObjectSequence, FIRST(self)); 
  107.  
  108. imeth objrtn LinkObject_im_gSequenceLinks(object self)
  109.     return gNewWithObj(LinkSequence, FIRST(self)); 
  110.  
  111. imeth objrtn LinkObject_im_gNth(object self, int idx)
  112.     object r = oSuper(LinkObject_c, gNth, self)(self, idx); 
  113.     return r ? gValue(r) : NULLOBJ; 
  114.  
  115.  
  116. #line 135 "linkobj.c"
  117.  
  118. objrtn    LinkObject_initialize(void)
  119. {
  120.     static  CRITICALSECTION  cs;
  121.     static  int volatile once = 0;
  122.  
  123.     ENTERCRITICALSECTION(_CI_CS_);
  124.     if (!once) {
  125.         INITIALIZECRITICALSECTION(cs);
  126.         once = 1;
  127.     }
  128.     LEAVECRITICALSECTION(_CI_CS_);
  129.  
  130.     ENTERCRITICALSECTION(cs);
  131.  
  132.     if (LinkObject_c) {
  133.         LEAVECRITICALSECTION(cs);
  134.         return LinkObject_c;
  135.     }
  136.     INHIBIT_THREADER;
  137.     LinkList_initialize();
  138.     if (LinkObject_c)  {
  139.         ENABLE_THREADER;
  140.         LEAVECRITICALSECTION(cs);
  141.         return LinkObject_c;
  142.     }
  143.     LinkObject_c = gNewClass(Class, "LinkObject", 0, 0, LinkList, END);
  144.     cvMethodFor(LinkObject, vMakeList, LinkObject_cvm_vMakeList, LinkObject_cfm_vMakeList);
  145.     iMethodFor(LinkObject, gAddFirst, LinkObject_im_gAddFirst);
  146.     iMethodFor(LinkObject, gFirst, LinkObject_im_gFirst);
  147.     iMethodFor(LinkObject, gLast, LinkObject_im_gLast);
  148.     iMethodFor(LinkObject, gSequence, LinkObject_im_gSequence);
  149.     ivMethodFor(LinkObject, vGetValues, LinkObject_ivm_vGetValues, LinkObject_ifm_vGetValues);
  150.     iMethodFor(LinkObject, gSequenceLinks, LinkObject_im_gSequenceLinks);
  151.     iMethodFor(LinkObject, gAddLast, LinkObject_im_gAddLast);
  152.     iMethodFor(LinkObject, gNth, LinkObject_im_gNth);
  153.  
  154.     ENABLE_THREADER;
  155.  
  156.     LEAVECRITICALSECTION(cs);
  157.  
  158.     return LinkObject_c;
  159. }
  160.  
  161.  
  162.  
  163.